#!/usr/bin/python
# -*- coding: UTF8 -*-

u'''Testa o módulo da Reversal Russa para Português.
(Daí os comentários em português e o utf-8.
yeah, yeah, talk to Batman)'''

import re
import reversal
import unittest

class Phrases(unittest.TestCase):

    '''formato:
    [eu] <verbo|locução v.> [preposição] <artigo> <objeto direto e/ou indireto>
    '''

    def __strip(self, phrase):
        return re.findall('Na Uni\xe3o Sovi\xe9tica, (.*)!', phrase)[0]

    def setUp(self):
        self.simple_phrases = [
            (u'eu programo em python',
             u'python programa em você'),
            (u'alimento o cachorro',
             u'o cachorro alimenta você'),
            (u'eu compro um ingresso',
             u'um ingresso compra você'),
            (u'bebo uma vodka',
             u'uma vodka bebe você'),
        ]
        self.preploc_phrases = [
            (u'eu escapo da casa',
             u'a casa escapa de você'),
            (u'eu escapo correndo da casa',
             u'a casa escapa correndo de você'),
            (u'eu saio da casa',
             u'a casa sai de você'),
            (u'eu dou à luz o meu filho',
             u'o seu filho dá à luz você'),
            (u'fico atormentado pelo remorso',
             u'o remorso fica atormentado por você'),
        ]

    def testSimple0(self):
        phrase, expected = self.simple_phrases[0]
        self.assertEqual(self.__strip(reversal.russian_reversal(phrase)),
                         expected)

    def testSimple1(self):
        phrase, expected = self.simple_phrases[1]
        self.assertEqual(self.__strip(reversal.russian_reversal(phrase)),
                         expected)

    def testSimple2(self):
        phrase, expected = self.simple_phrases[2]
        self.assertEqual(self.__strip(reversal.russian_reversal(phrase)),
                         expected)

    def testSimple3(self):
        phrase, expected = self.simple_phrases[3]
        self.assertEqual(self.__strip(reversal.russian_reversal(phrase)),
                         expected)

    def testPrepositionalLocutions0(self):
        phrase, expected = self.preploc_phrases[0]
        self.assertEqual(self.__strip(reversal.russian_reversal(phrase)),
                         expected)

    def testPrepositionalLocutions1(self):
        phrase, expected = self.preploc_phrases[1]
        self.assertEqual(self.__strip(reversal.russian_reversal(phrase)),
                         expected)

    def testPrepositionalLocutions2(self):
        phrase, expected = self.preploc_phrases[2]
        self.assertEqual(self.__strip(reversal.russian_reversal(phrase)),
                         expected)

    def testPrepositionalLocutions3(self):
        phrase, expected = self.preploc_phrases[3]
        self.assertEqual(self.__strip(reversal.russian_reversal(phrase)),
                         expected)

    def testCair(self):
        phrase = u'eu caio do muro'
        expected = u'o muro cai de você'
        self.assertEqual(self.__strip(reversal.russian_reversal(phrase)),
                         expected)

    def testCaiar(self):
        phrase = u'eu caio o muro'
        expected = u'o muro caia você'
        self.assertEqual(self.__strip(reversal.russian_reversal(phrase)),
                         expected)

if __name__ == '__main__':
    unittest.main()

